-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Upgrade] Go-Ethereum release v1.9.19 #1146
[Upgrade] Go-Ethereum release v1.9.19 #1146
Conversation
* cmd, core, eth, light, trie: dump clean cache periodically * eth: update config * trie: minor fix * core, trie: address comments * eth: remove useless * trie: print clean cache dump start too Co-authored-by: Péter Szilágyi <peterke@gmail.com>
* cmd, consensus, eth, les: implement light fetcher * les: address comment * les: address comment * les: address comments * les: check td after delivery * les: add linearExpiredValue for error counter * les: fix import * les: fix dead lock * les: order announces by td * les: encapsulate invalid counter * les: address comment * les: add more checks during the delivery * les: fix log * eth, les: fix lint * eth/fetcher: address comment
This reduces complexity of some lengthy functions in worker.go, making the code easier to read.
* init notes removed some mentions of eth62, bumped protocol err too old to >=63 * remove sanity checks and bump supported protocol version up to 63 * remove 62 tests, still need to add 65 * remove 65 tests
* Disable symbol table and DWARF generation by default. Trimpath if compiling with Go >= 1.13 * Set Go to minimum version 1.13. Revert debug symbol changes.
This replaces the two-stage shutdown scheme with the one we use almost everywhere else: a single quit channel signalling termination. Co-authored-by: Felix Lange <fjl@twurst.com>
core: sort txs at the same gas price by received time
Resolves #20163 Co-authored-by: Felix Lange <fjl@twurst.com>
…a ChainId (#21306) * Do not check for a non-nil ChainId * Add encoding test
This PR significantly changes the APIs for instantiating Ethereum nodes in a Go program. The new APIs are not backwards-compatible, but we feel that this is made up for by the much simpler way of registering services on node.Node. You can find more information and rationale in the design document: https://gist.github.com/renaynay/5bec2de19fde66f4d04c535fd24f0775. There is also a new feature in Node's Go API: it is now possible to register arbitrary handlers on the user-facing HTTP server. In geth, this facility is used to enable GraphQL. There is a single minor change relevant for geth users in this PR: The GraphQL API is no longer available separately from the JSON-RPC HTTP server. If you want GraphQL, you need to enable it using the ./geth --http --graphql flag combination. The --graphql.port and --graphql.addr flags are no longer available.
…padding (#21307) * Handle hex strings for bytesX types * Add tests for parseBytes * Improve tests * Return nil bytes if error is non-nil * Right-pad instead of left-pad bytes * More tests
Co-authored-by: Felix Lange <fjl@twurst.com>
* core: avoid modification of accountSet cache in tx_pool when runReorg, we may copy the dirtyAccounts' accountSet cache to promoteAddrs in which accounts will be promoted, however, if we have reset request at the same time, we may reuse promoteAddrs and modify the cache content which is against the original intention of accountSet cache. So, we need to make a new slice here to avoid modify accountSet cache. * core: fix flatten condition + comment Co-authored-by: Felix Lange <fjl@twurst.com>
This adds a lock around requests because some routers can't handle concurrent requests. Requests are also rate-limited. The Map function request a new mapping exactly when the map timeout occurs instead of 5 minutes earlier. This should prevent duplicate mappings.
* eth65 tests linted * remove non-latest eth light tests
…1414) * should fix import / export issues related to DB unavailability * document reason for makeConfigNode * fix comment * comment consistency * remove comments * lint
core/vm: avoid map lookups for accessing jumpdest analysis
* chaincmd should make config nodes instead of full nodes * add documentation for using makeConfigNode instead of makeFullNode; * add documentation to functions * code style
* cmd/utils: grant snapshot cache to trie if disabled * eth: fix up default non-mainnet cache distribution
Dependency on Consensys/quorum-acceptance-tests#83 |
privateReceipts[i] = new(types.Receipt) | ||
*privateReceipts[i] = *l | ||
} | ||
privateReceipts := copyReceipts(w.current.privateReceipts) // Quorum |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why do they need the privateReceipts
to seal the block?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
AT tests won't pass until we don't merge Consensys/quorum-acceptance-tests#83
TODO
Plan & Analyse
As you review, list extra changes and/or tests to be implemented to ensure compatibility with GoQuorum specific features.
Build & Test
master
into this branchExtra Changes & Tests
journal string
argument onNewDatabaseWithCache
affects the behaviour for the private database. Moreover, this change is affecting AT as in the end of the test, after the cleanup of data, this file is writing which creates issues in the next test which assumes the folder is empty.node/service.go
is removed. Documentation: https://gist.github.com/renaynay/5bec2de19fde66f4d04c535fd24f0775.Note, if you were using GraphQL previously, it was moved to the HTTP RPC endpoint. The old --graphql.host and --graphql.port flags will not work any more. You might need to adjust your TOML config files accordingly too.
. We need to mention this in the docs and in the release notes, what is the process to update those @nmvalera ?startWSEndpoint
removed fromnode/endpoints.go
: we need to verify how is the new logic for the WS endpoint to make sure the listener is created withtlsConfigSource
.RegisterEthService
return changed: now it returns theethapi.Backend
so we maybe don't need anymore thechan *eth.Ethereum
which was used by raft service as it listens to this channel to get Ethereum backendif ctx.GlobalString(utils.SyncModeFlag.Name) == "light"
removed: when the syncMode waslight
, we were doingsetContractAuthzProviderFunc = lesService.SetContractAuthorizationManager
, but as now is not present anymore, we need to check if we still need to add that function somewhere else.copyReceipts
in the functioncommit()
for the private receipts (miner/worker.go
).Node.getSecuritySupports()
return pointers?Go-Ethereum Release: Red Janey (v1.9.19)
Release notes
Geth v1.9.19 is our regular biweekly maintenance release. Apart from the numerous bug-fixes however, it also ships a more deterministic transaction sort order during mining (FIFO). The goal is to reduce front-runner spam which abused miner randomness for transactions at the same price level.
les/x
to use the same mechanism aseth/6x
(#20692).enode
ID of a node too when doing an ENR dump viadevp2p
(#21270).Bugfixes:
Note, if you were using GraphQL previously, it was moved to the HTTP RPC endpoint. The old
--graphql.host
and--graphql.port
flags will not work any more. You might need to adjust your TOML config files accordingly too.For a full rundown of the changes please consult the Geth 1.9.19 release milestone
As with all our previous releases, you can find the:
ethereum/client-go
.Codebase changes assessment
Legend
File Stats: (A) Added, (M) Modified and (R) Removed
Line Stats: (A) Added and (R) Removed
Assessment:
35 Pull Requests
M/A/R
(files changed)
A/R
(lines changed)
Fix posible nil exeption
cmd/clef/docs
(1)cmd/faucet
(1)signer/storage
(1)signer/storage/aes_gcm_storage.go
(12)cmd/clef/docs/setup.md
(4)cmd/faucet/faucet.html
(4)cmd, core, eth, light, trie: dump clean cache periodically
eth
(4)cmd/geth
(2)core
(2)core/state
(1)light
(1)trie
(1)cmd/utils
(1)trie/database.go
(102)eth/config.go
(56)core/blockchain.go
(46)cmd/utils/flags.go
(32)eth/gen_config.go
(24)les: implement new les fetcher
les
(10)consensus/ethash
(3)eth/fetcher
(3)les/utils
(2)consensus/clique
(2)eth
(1)cmd/geth
(1)consensus
(1)les/fetcher.go
(2410)eth/fetcher/block_fetcher_test.go
(592)les/fetcher_test.go
(536)eth/fetcher/block_fetcher.go
(412)les/utils/expiredvalue_test.go
(154)miner: refactor helper functions in worker.go
consensus/clique
(1)miner
(1)miner/worker.go
(176)consensus/clique/clique.go
(10)les: fix unittest
les
(1)les/fetcher_test.go
(16)eth/downloader: remove eth62
eth/downloader
(3)eth/downloader/downloader_test.go
(80)eth/downloader/peer.go
(42)eth/downloader/downloader.go
(8)build: use -trimpath flag when building executables
build
(1)build/ci.go
(12)core/bloombits: use single channel for shutdown
core/bloombits
(1)core/bloombits/matcher.go
(118)rawdb: fix comments to godoc convention format
core/rawdb
(1)core/rawdb/freezer.go
(8)core: sort txs at the same gas price by received time
core/types
(2)core/types/transaction.go
(110)core/types/transaction_test.go
(106)rpc: remove silly use of ReadVarint in subscription ID generator
rpc
(1)rpc/subscription.go
(18)rpc: add SetHeader method to Client
rpc
(3)rpc/client_test.go
(74)rpc/http.go
(74)rpc/client.go
(30)TypedData.EncodeData should not reject a Domain without a ChainId
signer/core
(2)signer/core/signed_data_test.go
(16)signer/core/signed_data.go
(12)node: refactor package node
cmd/geth
(6)les
(5)cmd/utils
(3)graphql
(2)eth
(2)miner
(2)ethclient
(1)cmd/wnode
(1)cmd/p2psim
(1)core/rawdb
(1)internal/ethapi
(1)cmd/faucet
(1)console
(1)ethstats
(1)mobile
(1)les/checkpointoracle
(1)ethstats/ethstats.go
(304)cmd/utils/flags.go
(228)graphql/graphql_test.go
(216)eth/backend.go
(188)miner/stress_ethash.go
(178)signer: EIP 712, parse `bytes` and `bytesX` as hex strings + correct padding
signer/core
(2)signer/core/signed_data_internal_test.go
(188)signer/core/signed_data.go
(54)cmd/devp2p: print enode:// URL in enrdump
cmd/devp2p
(1)cmd/devp2p/enrcmd.go
(38)core: avoid modification of accountSet cache in tx_pool
core
(1)core/tx_pool.go
(14)ethstats: avoid concurrent write on websocket, fixes #21403
ethstats
(1)ethstats/ethstats.go
(136)p2p/nat: limit UPNP request concurrency
p2p/nat
(2)p2p/nat/natupnp.go
(160)p2p/nat/nat.go
(18)core: use errors.Is for consensus errors check
core
(1)core/blockchain.go
(24)downloader: add eth65 tests
eth/downloader
(1)eth/downloader/downloader_test.go
(164)cmd/geth: fix import / export issues related to DB unavailability
cmd/geth
(1)cmd/geth/chaincmd.go
(12)core/vm: avoid map lookups for accessing jumpdest analysis
core/vm
(1)core/vm/contract.go
(12)cmd/geth: fixes db unavailability for chain commands
cmd/geth
(2)cmd/geth/chaincmd.go
(26)cmd/geth/config.go
(4)core: Use maxQueuedTxAnns for to limit the number of transactions announced
eth
(1)eth/peer.go
(4)cmd/utils: grant snapshot cache to trie if disabled
cmd/utils
(1)eth
(1)eth/config.go
(8)cmd/utils/flags.go
(2)les: update checktime even if check fails
les/checkpointoracle
(1)les/checkpointoracle/oracle.go
(16)eth/downloader: save the correct delivery time for state sync
eth/downloader
(1)eth/downloader/statesync.go
(38)les: close all connected les-server when shutdown
les
(3)les/peer.go
(78)les/server.go
(10)les/server_handler.go
(6)eth/downloader: set deliverytime on drops and timeouts too
eth/downloader
(1)eth/downloader/statesync.go
(6)ethstats: overwrite old errors
ethstats
(1)ethstats/ethstats.go
(10)eth/downloader: allow all timers to exit
eth/downloader
(1)eth/downloader/statesync.go
(16)ethstats: split read and write lock, otherwise they'll lock up
ethstats
(1)ethstats/ethstats.go
(64)tests: add Berlin-definition identical to YOLOv1
tests
(1)tests/init.go
(28)params: update CHTs for v1.9.19
params
(1)params/config.go
(64)120 Changed files
les/fetcher.go
node/node.go
node/node_test.go
node/rpcstack.go
node/api_test.go
eth/fetcher/block_fetcher_test.go
p2p/testing/protocoltester.go
p2p/testing/protocolsession.go
les/fetcher_test.go
#20692
ethstats/ethstats.go
#21105
#21434
#21428
eth/fetcher/block_fetcher.go
node/api.go
cmd/utils/flags.go
#21105
#21416
node/utils_test.go
node/service.go
eth/downloader/downloader_test.go
#21383
node/rpcstack_test.go
graphql/graphql_test.go
les/peer.go
#21426
node/service_test.go
eth/backend.go
#21105
p2p/simulations/adapters/inproc.go
signer/core/signed_data_internal_test.go
p2p/simulations/adapters/exec.go
miner/stress_ethash.go
miner/worker.go
miner/stress_clique.go
whisper/whisperv6/whisper_test.go
graphql/service.go
p2p/nat/natupnp.go
les/utils/expiredvalue_test.go
p2p/testing/peerpool.go
core/bloombits/matcher.go
les/client.go
#20692
whisper/whisperv6/whisper.go
les/server.go
#20692
#21426
core/types/transaction.go
core/types/transaction_test.go
trie/database.go
cmd/geth/main.go
#21105
les/utils/expiredvalue.go
p2p/simulations/adapters/types.go
node/node_example_test.go
rpc/http.go
node/doc.go
rpc/client_test.go
core/blockchain.go
#20391
signer/core/signed_data.go
#21307
params/config.go
consensus/clique/clique.go
#20692
node/lifecycle.go
consensus/consensus.go
eth/downloader/statesync.go
#21433
#21427
ethclient/ethclient_test.go
mobile/geth.go
eth/config.go
#21416
les/client_handler.go
p2p/simulations/network_test.go
les/server_handler.go
#21426
les/commons.go
whisper/mailserver/server_test.go
cmd/faucet/faucet.go
eth/api_backend.go
core/rawdb/freezer.go
#21105
les/api_test.go
whisper/whisperv6/filter_test.go
eth/downloader/peer.go
node/config.go
cmd/geth/chaincmd.go
#21415
#21105
consensus/ethash/consensus.go
cmd/devp2p/enrcmd.go
les/checkpointoracle/oracle.go
#21425
cmd/geth/retesteth.go
p2p/simulations/examples/ping-pong.go
cmd/geth/consolecmd.go
node/endpoints.go
rpc/client.go
cmd/geth/config.go
#21105
tests/init.go
cmd/utils/flags_legacy.go
p2p/simulations/network.go
eth/gen_config.go
node/errors.go
rpc/subscription.go
p2p/nat/nat.go
les/api_backend.go
p2p/simulations/http_test.go
console/console_test.go
signer/core/signed_data_test.go
internal/ethapi/backend.go
core/tx_pool.go
core/vm/contract.go
core/state/database.go
cmd/geth/usage.go
#21105
les/clientpool.go
build/ci.go
signer/storage/aes_gcm_storage.go
cmd/wnode/main.go
les/odr_test.go
eth/downloader/downloader.go
light/postprocess.go
p2p/simulations/connect_test.go
eth/api_tracer.go
cmd/geth/dao_test.go
whisper/whisperv6/api_test.go
consensus/clique/api.go
eth/handler.go
params/version.go
cmd/utils/cmd.go
p2p/simulations/test.go
consensus/ethash/sealer.go
cmd/p2psim/main.go
core/genesis.go
cmd/clef/docs/setup.md
cmd/faucet/faucet.html
consensus/ethash/ethash.go
eth/peer.go
node/defaults.go
les/test_helper.go